<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
<script type="text/javascript">
    // 对象是如何赋值给另一个变量的，并且，如果我们对该变量做一些操作的话，元对象也会跟着被改变。
    var original = {
        howmany: 1
    };

    var mycopy = original;
    console.log(mycopy.howmany);

    mycopy.howmany = 100;

    console.log(original.howmany);

    // 同样的，该对象传递给函数的情况也大抵如此
    var original1 = {
        howmany: 100
    };

    var nullify = function(o) {
        o.howmany = 0;
    }

    nullify(original1);
    console.log(original1.howmany);
</script>

<!-- 比较对象 -->
<script type="text/javascript">
    var fido = {
        breed: 'dog'
    };

    var benji = {
        breed: 'dog'
    };

    // 虽然属性都是一样的，但是因为不是指向同一个对象，所以返回false
    console.log(benji === fido);
    console.log(benji == fido);

    // 我们可以创建一个变量mydog，并将其中一个对象赋值给他。这样一来mydog实际上就指向了这个变量。
    var mydog = benji;

    // 因为mydog和benji的指向对象是相同的，这样进行比较操作就会返回true;
    console.log(mydog === benji);

    // 同理，fido和mydog也不会相同
    console.log(fido === mydog);
</script>
</body>
</html>
